{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torchvision.transforms import transforms\n",
    "from torchvision.datasets import ImageFolder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "my_transforms = transforms.Compose([\n",
    "    transforms.Resize((64, 64)),\n",
    "    transforms.RandomHorizontalFlip(),\n",
    "    transforms.RandomRotation(10),\n",
    "    transforms.ToTensor()\n",
    "])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data = ImageFolder('./data/Training',transform=my_transforms)  \n",
    "valid_data = ImageFolder('./data/Validation',transform=my_transforms)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ypV4/PHH096lY+LRRx/FBz/4QfT29sLzPHznO9+Z9v0kSXDLLbegp6cHhUIBa9aswUsvvZTOzr5N1q9fjwsvvBBNTU3o7OzEhz70IezYsWPamHK5jLVr12LevHlobGzEVVddhYEB3plxtrJx40YsX7586i/HV61ahe9+97tT358Lczya22+/HZ7n4YYbbpiqzYV5/smf/Ak8z5v2tXTp0qnvz4U5/pw9e/bg937v9zBv3jwUCgWcc845ePLJJ6e+/6t+D5q1C9Df//3f46abbsKtt96Kp556Cueeey4uv/xy7N+/P+1de9uMj4/j3HPPxYYNG+j3P//5z+NLX/oS7rrrLjz22GNoaGjA5ZdfjnKZp+rORrZs2YK1a9di27Zt+N73vodarYb//J//M8bHx6fG3HjjjXjwwQdx//33Y8uWLdi7dy8+/OEPp7jXM2f+/Pm4/fbbsX37djz55JO49NJLceWVV+L5558HMDfm+EaeeOIJfPWrX8Xy5cun1efKPM866yzs27dv6usHP/jB1PfmyhwHBwexevVqZDIZfPe738ULL7yAv/zLv0Rr6y/arP/K34OSWcpFF12UrF27dur/oyhKent7k/Xr16e4V8cPAMkDDzww9f9xHCfd3d3JF77whana0NBQksvlkr/7u79LYQ+PD/v3708AJFu2bEmS5MicMplMcv/990+NefHFFxMAydatW9PazeNCa2tr8jd/8zdzbo6jo6PJkiVLku9973vJb/zGbySf+tSnkiSZO+fy1ltvTc4991z6vbkyxyRJkj/6oz9KLrnkEvP7abwHzcpPQNVqFdu3b8eaNWumar7vY82aNdi6dWuKe3bi2LlzJ/r7+6fNuVQqYeXKlSf1nIeHhwEAbW1tAIDt27ejVqtNm+fSpUuxcOHCk3aeURRh06ZNGB8fx6pVq+bcHNeuXYv3v//90+YDzK1z+dJLL6G3txennXYarr76auzatQvA3JrjP/7jP+KCCy7A7/zO76CzsxPnn38+vv71r099P433oFm5AB08eBBRFKGrq2tavaurC/39/Snt1Ynl5/OaS3OO4xg33HADVq9ejbPPPhvAkXlms1m0tLRMG3syzvPZZ59FY2MjcrkcPvnJT+KBBx7AmWeeOafmuGnTJjz11FNYv3698725Ms+VK1fi3nvvxUMPPYSNGzdi586d+LVf+zWMjo7OmTkCwKuvvoqNGzdiyZIlePjhh3HttdfiD//wD/GNb3wDQDrvQbOuHYOYO6xduxbPPffctN+nzyXOOOMMPP300xgeHsb//t//G9dccw22bNmS9m4dN/r6+vCpT30K3/ve95DP59PenRPGFVdcMfXfy5cvx8qVK7Fo0SJ8+9vfRqFQSHHPji9xHOOCCy7A5z73OQDA+eefj+eeew533XUXrrnmmlT2aVZ+Ampvb0cQBI5pMjAwgO7u7pT26sTy83nNlTlfd911+Kd/+if8+7//+7SOiN3d3ahWqxgaGpo2/mScZzabxemnn44VK1Zg/fr1OPfcc/FXf/VXc2aO27dvx/79+/Ge97wHYRgiDENs2bIFX/rSlxCGIbq6uubEPI+mpaUF7373u/Hyyy/PmXMJAD09PTjzzDOn1ZYtWzb168Y03oNm5QKUzWaxYsUKbN68eaoWxzE2b96MVatWpbhnJ47Fixeju7t72pxHRkbw2GOPnVRzTpIE1113HR544AF8//vfx+LFi6d9f8WKFchkMtPmuWPHDuzateukmicjjmNUKpU5M8fLLrsMzz77LJ5++umprwsuuABXX3311H/PhXkezdjYGF555RX09PTMmXMJAKtXr3b+JOKnP/0pFi1aBCCl96ATojYcBzZt2pTkcrnk3nvvTV544YXkE5/4RNLS0pL09/envWtvm9HR0eTHP/5x8uMf/zgBkHzxi19MfvzjHyevv/56kiRJcvvttyctLS3JP/zDPyTPPPNMcuWVVyaLFy9OJicnU97zt861116blEql5JFHHkn27ds39TUxMTE15pOf/GSycOHC5Pvf/37y5JNPJqtWrUpWrVqV4l7PnM985jPJli1bkp07dybPPPNM8pnPfCbxPC/513/91yRJ5sYcGW+04JJkbszz5ptvTh555JFk586dyQ9/+MNkzZo1SXt7e7J///4kSebGHJMkSR5//PEkDMPkz//8z5OXXnop+da3vpUUi8Xkb//2b6fG/Krfg2btApQkSfLXf/3XycKFC5NsNptcdNFFybZt29LepWPi3//93xMAztc111yTJMkRDfKzn/1s0tXVleRyueSyyy5LduzYke5OzxA2PwDJPffcMzVmcnIy+e///b8nra2tSbFYTH77t3872bdvX3o7/Tb4gz/4g2TRokVJNptNOjo6kssuu2xq8UmSuTFHxtEL0FyY50c+8pGkp6cnyWazySmnnJJ85CMfSV5++eWp78+FOf6cBx98MDn77LOTXC6XLF26NPna17427fu/6vcg9QMSQgiRCrPyGZAQQoi5jxYgIYQQqaAFSAghRCpoARJCCJEKWoCEEEKkghYgIYQQqaAFSAghRCpoARJCCJEKWoCEEEKkghYgIYQQqaAFSAghRCr8/6gmKB5rAIeeAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "\n",
    "# 显示图片\n",
    "plt.imshow(train_data[23][0].permute(1, 2, 0))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch.utils.data import DataLoader\n",
    "\n",
    "train_loader = DataLoader(train_data, batch_size=64, shuffle=True)\n",
    "valid_loader = DataLoader(valid_data, batch_size=64, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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k5Mzx9x00024//77ce+992Lv3r04cuQIrrzyyhJbPX/OPvts3Hbbbdi/fz8effRRXHbZZbjiiivwne98B8Di6OO/5+tf/zr+9E//FBdccMGs+mLp5+te9zocPXp05uef/umfZl5bLH08ceIELr30UlSrVXzxi1/EE088gT/4gz/AkiVLZo75iX8G5QuUN73pTfm2bdtm/j9N03z16tX5jh07SmzV6QNAft999838f5Zl+cqVK/NPfOITM7WRkZG8Vqvlf/3Xf11CC08Px44dywHke/fuzfP8ZJ+q1Wp+7733zhzzr//6rzmAfN++fWU187SwZMmS/M/+7M8WXR/Hx8fz9evX51/60pfy//yf/3P+/ve/P8/zxTOWt9xyS37hhRfS1xZLH/M8z3/nd34nf8tb3iJfL+MzaEE+AbXbbezfvx9btmyZqYVhiC1btmDfvn0ltuzl4+DBgxgaGprV5/7+fmzatOmM7vPo6CgAYOnSpQCA/fv3I0mSWf3csGED1q5de8b2M01T7N69G5OTk9i8efOi6+O2bdvwC7/wC7P6AyyusXzyySexevVqvOpVr8LVV1+NQ4cOAVhcffyHf/gHXHzxxfjlX/5lrFixAhdddBE++9nPzrxexmfQglyAnnvuOaRpisHBwVn1wcFBDA0NldSql5d/69di6nOWZbjxxhtx6aWX4vzzzwdwsp9xHGNgYGDWsWdiP7/97W+jp6cHtVoN73vf+3DffffhvPPOW1R93L17N77xjW9gx44dhdcWSz83bdqEu+++Gw888AB27dqFgwcP4md/9mcxPj6+aPoIAD/4wQ+wa9curF+/Hg8++CCuu+46/NZv/RY+97nPASjnM2jBxTGYxcO2bdvw+OOPz/o+fTHx2te+Fo899hhGR0fxd3/3d7jmmmuwd+/espt12jh8+DDe//7340tf+hLq9XrZzXnZuPzyy2f++4ILLsCmTZtwzjnn4G//9m/RaDRKbNnpJcsyXHzxxfjYxz4GALjooovw+OOP44477sA111xTSpsW5BPQWWedhUqlUlCaDA8PY+XKlSW16uXl3/q1WPp8/fXX4wtf+AK+8pWvzOQ7ASf72W63MTIyMuv4M7GfcRzj1a9+NTZu3IgdO3bgwgsvxB/90R8tmj7u378fx44dwxvf+EZEUYQoirB371586lOfQhRFGBwcXBT9nMvAwABe85rX4Kmnnlo0YwkAq1atwnnnnTerdu6558583VjGZ9CCXIDiOMbGjRuxZ8+emVqWZdizZw82b95cYstePtatW4eVK1fO6vPY2BgeeeSRM6rPeZ7j+uuvx3333Ycvf/nLWLdu3azXN27ciGq1OqufBw4cwKFDh86ofjKyLEOr1Vo0fXzb296Gb3/723jsscdmfi6++GJcffXVM/+9GPo5l4mJCXz/+9/HqlWrFs1YAsCll15a+JOI733vezjnnHMAlPQZ9LJIG04Du3fvzmu1Wn733XfnTzzxRP7e9743HxgYyIeGhspu2ktmfHw8/+Y3v5l/85vfzAHkf/iHf5h/85vfzH/0ox/leZ7nt912Wz4wMJD//d//ff6tb30rv+KKK/J169bl09PTJbf8xXPdddfl/f39+Ve/+tX86NGjMz9TU1Mzx7zvfe/L165dm3/5y1/OH3300Xzz5s355s2bS2z1/PngBz+Y7927Nz948GD+rW99K//gBz+YB0GQ/+M//mOe54ujj4x/r4LL88XRzw984AP5V7/61fzgwYP5P//zP+dbtmzJzzrrrPzYsWN5ni+OPuZ5nn/ta1/LoyjKP/rRj+ZPPvlk/ld/9Vd5V1dX/pd/+Zczx/ykP4MW7AKU53n+x3/8x/natWvzOI7zN73pTfnDDz9cdpNOia985Ss5gMLPNddck+f5SRnkhz/84XxwcDCv1Wr52972tvzAgQPlNnqesP4ByO+6666ZY6anp/Pf/M3fzJcsWZJ3dXXlv/RLv5QfPXq0vEa/BP7H//gf+TnnnJPHcZwvX748f9vb3jaz+OT54ugjY+4CtBj6+e53vztftWpVHsdx/opXvCJ/97vfnT/11FMzry+GPv4b999/f37++efntVot37BhQ/6Zz3xm1us/6c8g5wEZY4wphQW5B2SMMWbx4wXIGGNMKXgBMsYYUwpegIwxxpSCFyBjjDGl4AXIGGNMKXgBMsYYUwpegIwxxpSCFyBjjDGl4AXIGGNMKXgBMsYYUwr/H6BVIX/IMMYyAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor(0)\n"
     ]
    }
   ],
   "source": [
    "image, label = next(iter(train_loader))\n",
    "\n",
    "plt.imshow(image[0].permute(1, 2, 0))\n",
    "plt.show()\n",
    "print(label[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\Users\\zhaom\\miniconda3\\lib\\site-packages\\torchvision\\models\\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
      "  warnings.warn(\n",
      "c:\\Users\\zhaom\\miniconda3\\lib\\site-packages\\torchvision\\models\\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.\n",
      "  warnings.warn(msg)\n",
      "Downloading: \"https://download.pytorch.org/models/resnet18-f37072fd.pth\" to C:\\Users\\zhaom/.cache\\torch\\hub\\checkpoints\\resnet18-f37072fd.pth\n",
      "100%|██████████| 44.7M/44.7M [00:19<00:00, 2.45MB/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ResNet(\n",
      "  (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n",
      "  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "  (relu): ReLU(inplace=True)\n",
      "  (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
      "  (layer1): Sequential(\n",
      "    (0): BasicBlock(\n",
      "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    )\n",
      "    (1): BasicBlock(\n",
      "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    )\n",
      "  )\n",
      "  (layer2): Sequential(\n",
      "    (0): BasicBlock(\n",
      "      (conv1): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (downsample): Sequential(\n",
      "        (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
      "        (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      )\n",
      "    )\n",
      "    (1): BasicBlock(\n",
      "      (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    )\n",
      "  )\n",
      "  (layer3): Sequential(\n",
      "    (0): BasicBlock(\n",
      "      (conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (downsample): Sequential(\n",
      "        (0): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
      "        (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      )\n",
      "    )\n",
      "    (1): BasicBlock(\n",
      "      (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    )\n",
      "  )\n",
      "  (layer4): Sequential(\n",
      "    (0): BasicBlock(\n",
      "      (conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (downsample): Sequential(\n",
      "        (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
      "        (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      )\n",
      "    )\n",
      "    (1): BasicBlock(\n",
      "      (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    )\n",
      "  )\n",
      "  (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n",
      "  (fc): Linear(in_features=512, out_features=1000, bias=True)\n",
      ")\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "from torchvision.models import resnet18\n",
    "resnet = resnet18(pretrained=True)\n",
    "print(resnet)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ResNet(\n",
      "  (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n",
      "  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "  (relu): ReLU(inplace=True)\n",
      "  (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
      "  (layer1): Sequential(\n",
      "    (0): BasicBlock(\n",
      "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    )\n",
      "    (1): BasicBlock(\n",
      "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    )\n",
      "  )\n",
      "  (layer2): Sequential(\n",
      "    (0): BasicBlock(\n",
      "      (conv1): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (downsample): Sequential(\n",
      "        (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
      "        (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      )\n",
      "    )\n",
      "    (1): BasicBlock(\n",
      "      (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    )\n",
      "  )\n",
      "  (layer3): Sequential(\n",
      "    (0): BasicBlock(\n",
      "      (conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (downsample): Sequential(\n",
      "        (0): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
      "        (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      )\n",
      "    )\n",
      "    (1): BasicBlock(\n",
      "      (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    )\n",
      "  )\n",
      "  (layer4): Sequential(\n",
      "    (0): BasicBlock(\n",
      "      (conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (downsample): Sequential(\n",
      "        (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
      "        (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      )\n",
      "    )\n",
      "    (1): BasicBlock(\n",
      "      (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "    )\n",
      "  )\n",
      "  (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n",
      "  (fc): Linear(in_features=512, out_features=2, bias=True)\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "# 冻结参数\n",
    "for param in resnet.parameters():\n",
    "    param.requires_grad = False\n",
    "\n",
    "# 修改最后一层输出二分类\n",
    "resnet.add_module('fc', torch.nn.Linear(512, 2))\n",
    "print(resnet)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "fc.weight\n",
      "fc.bias\n"
     ]
    }
   ],
   "source": [
    "# 查看需要训练的参数\n",
    "for name, param in resnet.named_parameters():\n",
    "    if param.requires_grad:\n",
    "        print(name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 优化器\n",
    "optimizer = torch.optim.Adam(resnet.parameters(), lr=0.0001)\n",
    "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=10, gamma=0.1) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "use device:  cuda\n",
      "Epoch 1/20\n",
      "----------\n",
      "train Loss: 0.5560\n",
      "valid Loss: 0.7446\n",
      "Epoch 2/20\n",
      "----------\n",
      "train Loss: 0.4545\n",
      "valid Loss: 0.6105\n",
      "Epoch 3/20\n",
      "----------\n",
      "train Loss: 0.6057\n",
      "valid Loss: 0.6712\n",
      "Epoch 4/20\n",
      "----------\n",
      "train Loss: 0.4070\n",
      "valid Loss: 0.7047\n",
      "Epoch 5/20\n",
      "----------\n",
      "train Loss: 0.5354\n",
      "valid Loss: 0.7409\n",
      "Epoch 6/20\n",
      "----------\n",
      "train Loss: 0.4697\n",
      "valid Loss: 0.7016\n",
      "Epoch 7/20\n",
      "----------\n",
      "train Loss: 0.5109\n",
      "valid Loss: 0.6186\n",
      "Epoch 8/20\n",
      "----------\n",
      "train Loss: 0.4487\n",
      "valid Loss: 0.9299\n",
      "Epoch 9/20\n",
      "----------\n",
      "train Loss: 0.3406\n",
      "valid Loss: 0.7232\n",
      "Epoch 10/20\n",
      "----------\n",
      "train Loss: 0.4746\n",
      "valid Loss: 0.8192\n",
      "Epoch 11/20\n",
      "----------\n",
      "train Loss: 0.4396\n",
      "valid Loss: 0.7419\n",
      "Epoch 12/20\n",
      "----------\n",
      "train Loss: 0.4928\n",
      "valid Loss: 0.6831\n",
      "Epoch 13/20\n",
      "----------\n",
      "train Loss: 0.4623\n",
      "valid Loss: 0.8027\n",
      "Epoch 14/20\n",
      "----------\n",
      "train Loss: 0.5129\n",
      "valid Loss: 0.7329\n",
      "Epoch 15/20\n",
      "----------\n",
      "train Loss: 0.4834\n",
      "valid Loss: 0.7483\n",
      "Epoch 16/20\n",
      "----------\n",
      "train Loss: 0.7712\n",
      "valid Loss: 0.7628\n",
      "Epoch 17/20\n",
      "----------\n",
      "train Loss: 0.3130\n",
      "valid Loss: 0.6004\n",
      "Epoch 18/20\n",
      "----------\n",
      "train Loss: 0.6243\n",
      "valid Loss: 0.6905\n",
      "Epoch 19/20\n",
      "----------\n",
      "train Loss: 0.5473\n",
      "valid Loss: 0.5925\n",
      "Epoch 20/20\n",
      "----------\n",
      "train Loss: 0.4523\n",
      "valid Loss: 0.6714\n"
     ]
    }
   ],
   "source": [
    "# 训练\n",
    "import torch.nn.functional as F\n",
    "\n",
    "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
    "resnet.to(device)\n",
    "print('use device: ', device)\n",
    "\n",
    "loader = {'train': train_loader, 'valid': valid_loader}\n",
    "\n",
    "for epoch in range(20):\n",
    "    print('Epoch {}/{}'.format(epoch+1, 20))\n",
    "    print('-' * 10)\n",
    "\n",
    "    for phase in ['train', 'valid']:\n",
    "        for inputs, label in loader[phase]:\n",
    "            inputs = inputs.to(device)\n",
    "            label = label.to(device)\n",
    "\n",
    "            optimizer.zero_grad()\n",
    "            outputs = resnet(inputs)\n",
    "            loss = F.cross_entropy(outputs, label)\n",
    "\n",
    "            # 只有在训练阶段才更新参数\n",
    "            if phase == 'train':\n",
    "                loss.backward()\n",
    "                optimizer.step()\n",
    "        \n",
    "        print('{} Loss: {:.4f}'.format(phase, loss.item()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "torch.save(resnet.state_dict(), './model.pth')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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8eSTT2JkZAT/+3//b1x//fXYvn172sM6Yezfvx8f//jH8c1vfhOlUint4bxlXHXVVdP/fd5552Ht2rVYsWIF/uEf/gHlcjnFkZ1Y4jjGRRddhM985jMAgAsuuAA/+clP8KUvfQnXX399KmOak5+AFi5ciGw2GyhNhoaGMDAwkNKo3lpeP6/5cs433XQT/umf/gnf/va3ZyQiDgwMoFarYXh4eEb7k/E8C4UCzjzzTKxZswabNm3C+eefj7/8y7+cN+e4a9cuHDp0CBdeeCFyuRxyuRy2b9+OL3zhC8jlcujv758X5zmbnp4evOMd78Bzzz03b+4lACxZsgRnn332jNpZZ501/evGNN5Bc3IBKhQKWLNmDbZt2zZdi+MY27Ztw7p161Ic2VvHypUrMTAwMOOcR0dH8fjjj59U55wkCW666SY88MAD+Na3voWVK1fO+P6aNWuQz+dnnOfu3buxb9++k+o8GXEco1qtzptzfP/734+nnnoKTz755PTXRRddhOuuu276v+fDec5mfHwczz//PJYsWTJv7iUAXHbZZcGfRDz77LNYsWIFgJTeQW+JtOEEsHXr1qRYLCb33ntv8swzzyQf/ehHk56enmRwcDDtob1pxsbGkh/96EfJj370owRA8hd/8RfJj370o+TFF19MkiRJ7rzzzqSnpyf5+te/nvz4xz9Orr766mTlypXJ1NRUyiM/dm688caku7s7efTRR5ODBw9Of01OTk63+djHPpYsX748+da3vpU88cQTybp165J169alOOrW+eQnP5ls37492bt3b/LjH/84+eQnP5lkMpnk//yf/5Mkyfw4R8bPq+CSZH6c5yc+8Ynk0UcfTfbu3Zt897vfTdavX58sXLgwOXToUJIk8+MckyRJvv/97ye5XC758z//82TPnj3J3//93ydtbW3J3/3d3023+WW/g+bsApQkSfJXf/VXyfLly5NCoZBccsklyc6dO9Me0nHx7W9/OwEQfF1//fVJkrwmg/zUpz6V9Pf3J8ViMXn/+9+f7N69O91Btwg7PwDJPffcM91mamoq+U//6T8lvb29SVtbW/Lv/t2/Sw4ePJjeoN8E//E//sdkxYoVSaFQSBYtWpS8//3vn158kmR+nCNj9gI0H87zwx/+cLJkyZKkUCgkp5xySvLhD384ee6556a/Px/O8XUefPDB5Nxzz02KxWKyevXq5Mtf/vKM7/+y30HOAzLGGJMKc3IPyBhjzPzHC5AxxphU8AJkjDEmFbwAGWOMSQUvQMYYY1LBC5AxxphU8AJkjDEmFbwAGWOMSQUvQMYYY1LBC5AxxphU8AJkjDEmFf5/IXZQfmMgsigAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "img = valid_data[0][0]\n",
    "\n",
    "plt.imshow(img.permute(1, 2, 0))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[-0.5684, -0.6959]], device='cuda:0', grad_fn=<AddmmBackward0>)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "img = img.to(device)\n",
    "resnet(img.unsqueeze(0))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
